package cn.edu.tust.controller;

import java.io.IOException;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import cn.edu.tust.bean.UserInfoBean;
import cn.edu.tust.model.UserInfoModel;

/**
 * 使用注解的servlet框架： 注解 @WebServlet 表明这是一个控制层，用于接收客户端发送的请求；
 */
@WebServlet("/LoginServlet") // servlet的响应路径
public class LoginServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * 用于响应客户端的get请求
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// 业务处理
		// 获取客户发送的表单数据:
		// 注意：该方法的参数和前台页面form表单中的控件name属性值一一对应
		// 获取用户名
		String strUserName = request.getParameter("userName");
		// 获取密码
		String strUserPsw = request.getParameter("userPsw");
		// 输出获取的前台页面的form表单数据到控制台
		System.out.println("username:" + strUserName + ";userpsw:" + strUserPsw);
		
		// 将获取的表单的数据信息保存的实体类中
		UserInfoBean userInfoB = new UserInfoBean();
		// 存入获取的表单的用户名
		userInfoB.setUserName(strUserName);
		// 存入获取的表单的用户名
		userInfoB.setUserPsw(strUserPsw);
		
		// 调用Model层进行登录信息验证
		UserInfoModel userInfoM = new UserInfoModel();
		// 调用model层的登录验证的业务逻辑处理方法，进行登录验证
		List<UserInfoBean> lstUserInfos = userInfoM.doLogin(userInfoB);
		
		// 验证是否登录成功
		if (lstUserInfos != null && lstUserInfos.size() > 0) {
			// 登录验证成功
			// 跳转到登录成功页面
			// 重定向到登录成功页面
			response.sendRedirect("logined.jsp");
		} else {
			// 登录验证失败
			// 跳转到登录成功页面
			// 重定向到登录成功页面
			response.sendRedirect("login.jsp");
		}
	}

	/**
	 * 用于响应客户端的post请求，将get和post请求进行调用穿接，该类可以处理两种请求
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// 调用get请求
		doGet(request, response);
	}

}
